#include <stdio.h>
#include <signal.h>
#include <unistd.h>

// 思路1: 拦截SIGHUP
int main(int argc, char const *argv[]){
	printf("running.....\n");
	// 系统函数,设定收到信号的处理程序
	signal(SIGHUP, SIG_IGN);	// 忽略SIGHUP信号
	for (;;)
	{
		sleep(1);
		printf("sleeping for 1 second\n");
	}

	printf("exiting.... bye!\n");

	return 0;
}

// 缺陷: 通过bash调用本程序, 本程序的ppid是bash, 关闭bash, 本程序ppid变为"1"而且TT(tty)变为"?"(nginx程序变为孤儿程序,最终被init进程收养)

// 输出如下:
// aquawius@DESKTOP-CKR7QDI:~/C++CommunicationArchitecture$ ps -eo pid,ppid,sid,tty,pgrp,comm | grep -E 'bash|PID|nginx|keep'
//   PID  PPID   SID TT        PGRP COMMAND
//   981    67   981 pts/3      981 bash
// 21483    45 21113 ?        21483 keepRun2
// 21682    45 21529 ?        21682 keepRun1
// 21698    67 21698 pts/8    21698 bash

// 可以通过 ps -eo pid,ppid,sid,tty,pgrp,comm | grep -E 'bash|PID|nginx' 进行指定列的方式查看